﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Chamberlain
{
    public partial class FrmAlumno : Form
    {
        Alumno alu = new Alumno();
        public Alumno Alu
        {
            set { alu = value; }
        }

        Colegio col = new Colegio();

        public Colegio Col
        {
            set 
            { 
                col = value;
                txtOtroColegio.Text = col.Nombre;
            }
        }


        Seguro seg = new Seguro();
        public Seguro Seg
        {
            set 
            {   
                seg = value;
                txtOtroSeguro.Text = seg.Nombre;
            }            
        }

        Apoderado apo = new Apoderado();
        public Apoderado Apo
        {
            get { return apo; }
            set 
            { 
                apo = value;
                txtNombreApoderado.Text = apo.Nombre + " " + apo.Apellidos;
                pictureBox8.Image = Properties.Resources.check;
            }           
        }

        public FrmAlumno(Alumno al)
        {
            InitializeComponent();
            inicia_combos();
            alu = al;
            apo = alu.OApoderado;
            col = alu.OColegio;
            seg = alu.OSeguro;
            txtCodigo.Text = alu.CodAlumno;
            rbEditar.Checked = true;
            pictureBox3_Click(this, EventArgs.Empty);
        }

        public FrmAlumno()
        {
            InitializeComponent();
            inicia_combos();
        }

        private void pictureBox6_Click(object sender, EventArgs e)
        {           
                FrmColegio ColeUI = new FrmColegio(this);
                ColeUI.Show();                    
        }

        private bool validacontroles()
        {
            bool rpta = true;

            if (txtNombre.Text == "")
                txtNombre.BackColor = Color.FromArgb(255, 255, 192);
            else txtNombre.BackColor = Color.White;

            if (txtApaterno.Text == "")
                txtApaterno.BackColor = Color.FromArgb(255, 255, 192);
            else txtApaterno.BackColor = Color.White;

            if (txtAmaterno.Text == "")
                txtAmaterno.BackColor = Color.FromArgb(255, 255, 192);
            else txtAmaterno.BackColor = Color.White;

            if ((rbMasculino.Checked == true) || (rbFemenino.Checked == true))
            {
                rbMasculino.BackColor = Color.White;
                rbFemenino.BackColor = Color.White;
            }
            else
            {
                rbMasculino.BackColor = Color.FromArgb(255, 255, 192);
                rbFemenino.BackColor = Color.FromArgb(255, 255, 192);
            }

            if (txtAnioGraduacion.Text == "")
                txtAnioGraduacion.BackColor = Color.FromArgb(255, 255, 192);
            else
                txtAnioGraduacion.BackColor = Color.White;

            if ((int)cbDistrito.SelectedValue < 0)
                cbDistrito.BackColor = Color.FromArgb(255, 255, 192);
            else cbDistrito.BackColor = Color.White;

            if (txtDireccion.Text == "")
                txtDireccion.BackColor = Color.FromArgb(255, 255, 192);
            else txtDireccion.BackColor = Color.White;

            if ((int)cbSeguro.SelectedValue < 0)
                cbSeguro.BackColor = Color.FromArgb(255, 255, 192);
            else if ((int)cbSeguro.SelectedValue == 0)
            {
                cbSeguro.BackColor = Color.White;
                if (txtOtroSeguro.Text == "")
                    txtOtroSeguro.BackColor = Color.FromArgb(255, 255, 192);
                else txtOtroSeguro.BackColor = Color.White;
            }
            else cbSeguro.BackColor = Color.White;

            if (txtCodSeguro.Text == "")
                txtCodSeguro.BackColor = Color.FromArgb(255, 255, 192);
            else txtCodSeguro.BackColor = Color.White;


            if ((int)cbColegio.SelectedValue < 0)
                cbColegio.BackColor = Color.FromArgb(255, 255, 192);
            else if ((int)cbColegio.SelectedValue == 0)
            {
                cbColegio.BackColor = Color.White;
                if (txtOtroColegio.Text == "")
                    txtOtroColegio.BackColor = Color.FromArgb(255, 255, 192);
                else txtOtroColegio.BackColor = Color.White;
            }
            else cbColegio.BackColor = Color.White;

            if (txtTelefono.Text == "")
                txtTelefono.BackColor = Color.FromArgb(255, 255, 192);
            else txtTelefono.BackColor = Color.White;

            if (txtEmail.Text == "")
                txtEmail.BackColor = Color.FromArgb(255, 255, 192);
            else txtEmail.BackColor = Color.White;

            if (txtNombreApoderado.Text == "")
                txtNombreApoderado.BackColor = Color.FromArgb(255, 255, 192);
            else
                txtNombreApoderado.BackColor = Color.White;

            if ((txtNombre.Text == "") || (txtApaterno.Text == "") ||
                (txtAmaterno.Text == "") || ((rbMasculino.Checked == false) && (rbFemenino.Checked == false)) || (txtAnioGraduacion.Text == "") || (txtDireccion.Text == "") ||
                ((int)cbSeguro.SelectedValue == 0 && txtOtroSeguro.Text == "") || (txtCodSeguro.Text == "") ||
                ((int)cbColegio.SelectedValue == 0 && txtOtroColegio.Text == "") ||
                (txtEmail.Text == "") || (txtTelefono.Text == "") ||
                (txtNombreApoderado.Text == "") )
            {
                MessageBox.Show("Error 33.4: Por favor rellene todos los campos \nde amarillo para continuar", "Chamberlain - Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                rpta = false;
            }
            return rpta;

        }

        private void inicia_combos()
        {

            List<Distrito> ld = new List<Distrito>();
            Distrito d = new Distrito();
            ld = d.readall();
            cbDistrito.DataSource = ld;

            List<Seguro> ls = new List<Seguro>();
            Seguro s = new Seguro();
            ls = s.readall();
            s.Id = 0;
            s.Nombre = "[Especificar Otro]";
            ls.Add(s);
            cbSeguro.DataSource = ls;

            List<Colegio> lc = new List<Colegio>();
            Colegio c = new Colegio();
            lc = c.readall();
            c.Id = 0;
            c.Nombre = "[Especificar Otro]";
            lc.Add(c);
            cbColegio.DataSource = lc;

        }

        private void cbColegio_SelectedIndexChanged(object sender, EventArgs e)
        {
            if ((int)cbColegio.SelectedValue == 0)
            {
                txtOtroColegio.BackColor = Color.FromArgb(255, 255, 192);
                txtOtroColegio.Enabled = true;
                cbColegio.BackColor = Color.FromArgb(255, 255, 192);
                txtOtroColegio.Focus();
                btnOtroColegio.Image = Properties.Resources.flecha;
                btnOtroColegio.Enabled = true;
                label20.Enabled = true;
            }
            else
            {
                cbColegio.BackColor = Color.White;
                txtOtroColegio.BackColor = Color.WhiteSmoke;
                txtOtroColegio.Enabled = false;
                txtOtroColegio.Text = "";
                btnOtroColegio.Enabled = false;
                btnOtroColegio.Image = Properties.Resources.flecha2;

                label20.Enabled = false;
            }
        }

        private void pictureBox3_Click(object sender, EventArgs e)
        {
            if ((rbNuevo.Checked == true || rbEditar.Checked == true) && txtCodigo.Text!="")
            {
                alu.clean();
                alu.CodAlumno = txtCodigo.Text;
                alu.read();
                if (rbNuevo.Checked == true && alu.Id == 0)
                {
                    pictureBox2.Image = Properties.Resources.cross;
                    pictureBox3.Image = Properties.Resources.flecha;                    
                    limpiarCampos();
                    txtNombre.Focus();
                }
                else if (rbEditar.Checked == true && alu.Id != 0)
                {
                    if (rellenaMatricula() == true)
                    {
                        pictureBox2.Image = Properties.Resources.check;
                        pictureBox3.Image = Properties.Resources.flecha2;
                        groupBox1.Enabled = false;
                        btnGuardar.Focus();
                    }
                   
                }
                if (alu.Id != 0)
                {
                    toolTip1.Hide(pictureBox2);
                    toolTip1.Show("Este código se encuentra registrado.", pictureBox2, 2500);
                }
                else 
                {
                    pictureBox2.Image = Properties.Resources.cross;
                    toolTip1.Hide(pictureBox2);
                    toolTip1.Show("Este código aún no existe.", pictureBox2, 2500);
                    limpiarCampos();
                    txtNombre.Focus();
                    rbNuevo.Checked = true;
                    rbEditar.Checked = false;
                }
                
            }
            else MessageBox.Show("Error 33.3: Por favor escriba un codigo y seleccione la accion que desea realizar (Nuevo o Actualizar)", "Chamberlain - Alerta", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        }

        private void limpiarCampos()
        {
            pictureBox2.Image = null;
            alu.clean();
            txtNombre.Text = "";
            txtApaterno.Text = "";
            txtAmaterno.Text = "";
            dtFechaNacimiento.Value = DateTime.Today;
            rbMasculino.Checked = false;
            rbFemenino.Checked = false;
            txtAnioGraduacion.Text = "";
            txtDireccion.Text = "";
            txtTelefono.Text = "";
            txtEmail.Text = "";
            txtDNIApoderado.Text = "";
            pictureBox8.Image = null;
            txtNombreApoderado.Text = "";
            txtCodSeguro.Text = "";
            txtTelfAlterno.Text = "";
            txtTelfEmergencia.Text = "";
            txtDatosImportantes.Text = "";
            inicia_combos();
        }

        private bool rellenaMatricula()
        {
            alu.clean();
            alu.CodAlumno = txtCodigo.Text;
            alu.read();
            if (alu.Id != 0)
            {
                txtNombre.Text = alu.Nombre;
                txtApaterno.Text = alu.ApellidoPaterno;
                txtAmaterno.Text = alu.ApellidoMaterno;
                dtFechaNacimiento.Value = DateTime.Parse(alu.FechaNacimiento);
                if (alu.Sexo == 'M')
                    rbMasculino.Checked = true;
                else rbFemenino.Checked = true;
                txtAnioGraduacion.Text = alu.AnioGraduacion;
                txtDireccion.Text = alu.Direccion;
                cbDistrito.SelectedValue = alu.ODistrito.Id;
                txtTelefono.Text = alu.Telefono;
                txtEmail.Text = alu.Email;
                cbColegio.SelectedValue = alu.OColegio.Id;
                txtDNIApoderado.Text = alu.OApoderado.Dni;
                pictureBox7_Click(this, EventArgs.Empty);                
                cbSeguro.SelectedValue = alu.OSeguro.Id;
                txtCodSeguro.Text = alu.CodAsegurado;
                txtTelfAlterno.Text = alu.TelefonoAlterno;
                txtTelfEmergencia.Text = alu.TelefonoEmergencia;
                txtDatosImportantes.Text = alu.DatosImportantes;
                return true;
            }
            else return false;

        }

        private void pictureBox7_Click(object sender, EventArgs e)
        {
            if (txtDNIApoderado.Text != "")
            {
                apo.Id = 0;
                apo.Dni = txtDNIApoderado.Text;
                apo.read();
                if (apo.Id != 0)
                {
                    txtNombreApoderado.Text = apo.Nombre + " " + apo.Apellidos;
                    pictureBox8.Image = Properties.Resources.check;
                    txtDatosImportantes.Focus();
                }
                else
                {
                    apo.Dni = txtDNIApoderado.Text;
                    txtNombreApoderado.Text = "";
                    FrmApoderado apoUI = new FrmApoderado(this);
                    apoUI.Show();                    
                    pictureBox8.Image = Properties.Resources.cross;
                }
            }
            else pictureBox8.Image = Properties.Resources.cross;
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            if (validacontroles() == true)
            {
                alu.CodAlumno = txtCodigo.Text;
                alu.Nombre = txtNombre.Text;
                alu.ApellidoPaterno = txtApaterno.Text;
                alu.ApellidoMaterno = txtAmaterno.Text;
                alu.FechaNacimiento = dtFechaNacimiento.Value.ToShortDateString();
                alu.Telefono = txtTelefono.Text;
                alu.Email = txtEmail.Text;
                alu.TelefonoAlterno = txtTelfAlterno.Text;
                alu.TelefonoEmergencia = txtTelfEmergencia.Text;
                char sexo;
                if (rbMasculino.Checked == true)
                    sexo = 'M';
                else sexo = 'F';
                alu.Sexo = sexo;
                alu.Direccion = txtDireccion.Text;
                alu.ODistrito = new Distrito();
                alu.ODistrito = (Distrito)cbDistrito.SelectedItem;
                alu.OSeguro = new Seguro();
                if ((int)cbSeguro.SelectedValue != 0)
                    alu.OSeguro = (Seguro)cbSeguro.SelectedItem;
                else
                {
                    alu.OSeguro.Nombre = txtOtroSeguro.Text;
                    alu.OSeguro.insert();
                    alu.OSeguro.read();
                }
                alu.CodAsegurado = txtCodSeguro.Text;
                alu.OColegio = new Colegio();
                if ((int)cbColegio.SelectedValue != 0)
                    alu.OColegio = (Colegio)cbColegio.SelectedItem;
                else
                {
                    alu.OColegio.Nombre = txtOtroSeguro.Text;
                    alu.OColegio.insert();
                    alu.OColegio.read();
                }
                alu.OApoderado = new Apoderado();
                alu.OApoderado = apo;
                alu.AnioGraduacion = txtAnioGraduacion.Text;
                alu.Habilitado = 1;
                alu.DatosImportantes = txtDatosImportantes.Text;
                alu.calculaEdad();
                alu.OUniforme = new Uniforme();
                try {
                if (rbNuevo.Checked == true)
                    alu.insert();
                else alu.update();
                MessageBox.Show("Los datos se guardaron satisfactoriamente.");
                txtCodigo.Text = "";
                limpiarCampos();
                } catch (Exception exce)
                {
                    MessageBox.Show("Error 33.432: funcion<Guardar> --> " + exce.Message);
                }
             
                   
                
                
            }
        }

        private void cbSeguro_SelectedIndexChanged(object sender, EventArgs e)
        {
            if ((int)cbSeguro.SelectedValue == 0)
            {
                txtOtroSeguro.BackColor = Color.FromArgb(255, 255, 192);
                txtOtroSeguro.Enabled = true;
                cbSeguro.BackColor = Color.FromArgb(255, 255, 192);
                txtOtroSeguro.Focus();
                label29.Enabled = true;
                btnOtroSeguro.Image = Properties.Resources.flecha;
                btnOtroSeguro.Enabled = true;
            }
            else
            {
                cbSeguro.BackColor = Color.White;
                txtOtroSeguro.BackColor = Color.WhiteSmoke;
                txtOtroSeguro.Text = "";
                txtOtroSeguro.Enabled = false;
                label29.Enabled = false;
                btnOtroSeguro.Image = Properties.Resources.flecha2;
                btnOtroSeguro.Enabled = false;
            }
        }

        private void pictureBox4_Click(object sender, EventArgs e)
        {
            FrmSeguro s = new FrmSeguro();
            
            s.Show();
        }

        private void btnLimpiar_Click(object sender, EventArgs e)
        {
            limpiarCampos();
            pictureBox3.Image = Properties.Resources.flecha;
            groupBox1.Enabled = true;
            rbNuevo.Checked = false;
            rbEditar.Checked = false; 
            txtCodigo.Text = "";
        }



    }
}
